﻿// ***********************************************************************
// Assembly         : FM
// Author           : 年纪涛
// Created          : 2015年02月09日
// QQ               : 925007694
//
// Last Modified By : 年纪涛
// Last Modified On : 2015年02月09日
// ***********************************************************************
// <copyright file="小冰.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Threading;
using Microsoft.Practices.Prism.Mvvm;
using Microsoft.Practices.Prism.PubSubEvents;
using Microsoft.Practices.Prism.Regions;
using Microsoft.Practices.ServiceLocation;
using Microsoft.Practices.Unity;

namespace FM
{
    /// <summary>
    /// 程序常用静态方法类
    /// </summary>
    public static class 小冰
    {


        /// <summary>
        /// 加载默认解析工厂,需要初始化时候运行.
        /// </summary>
        public static void Set默认解析器()
        {
            ViewModelLocationProvider.SetDefaultViewModelFactory(
                T => 人事部.Resolve(T)); ;
        }


        public static IUnityContainer 人事部
        {
            get
            {
                return ServiceLocator.Current.GetInstance<IUnityContainer>();
            }
        }
        public static IEventAggregator 新闻部
        {
            get
            {
                return 人事部.Resolve<IEventAggregator>();
            }
        }

        //public static Dispatcher Ui线程 = Dispatcher.CurrentDispatcher;


        public static Dispatcher Ui线程
        {
            get { return Application.Current.Dispatcher; }
        }

        /// <summary>
        /// LoadViewModel,
        /// View路径为  ./Views/视图.
        /// ViewModel路径为  ./ViewModels/视图ViewModel.
        /// </summary>
        /// <param name="视图1"></param>
        /// <returns></returns>
        public static void LoadViewModel(this IView 视图1)
        {
            if (视图1 != null) ViewModelLocationProvider.AutoWireViewModelChanged(视图1);
        }


        public static bool 激活视图(IRegion 区域1, string 视图名称)
        {
            var 视图1 = 区域1.GetView(视图名称);
            if (视图1 == null)
                return false;
            区域1.Activate(视图1);
            return true;
        }
        public static bool 导航到视图(IRegion 区域1, string 视图名称)
        {
            var 视图1 = 区域1.GetView(视图名称);
            if (视图1 == null)
                return false;
            区域1.NavigationService.RequestNavigate(视图名称);
            return true;
        }

        /// <summary>
        /// 检查 必备条件.
        /// </summary>
        /// <param name="必备条件">The 必备条件.</param>
        /// <param name="出错提示">The 出错提示.</param>
        public static void 检查(Func<bool> 必备条件, string 出错提示)
        {
            System.Diagnostics.Contracts.Contract.Assert(必备条件(), 出错提示);
        }


        public static Window 主窗口
        {
            get { return Application.Current.MainWindow; }
        }


    }
}
